#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QTcpSocket>
#include<QHostAddress>
#include<QHostInfo>

#include<QMessageBox>

#include<QFile>
#include<QFileDialog>

#include<QDateTime>

#include<QPalette>
#include<QPainter>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_connect_clicked();

    void on_pushButton_disconnect_clicked();

    void on_pushButton_exit_clicked();

    void on_pushButton_send_clicked();

    void on_pushButton_clear_clicked();

    void on_pushButton_chooseFile_clicked();

    void on_pushButton_sendFile_clicked();


    void OnReadyReadFunc();     //当缓冲区有信息时

    void OnDisconnectedFunc();   //断开连接

    void UpdateProgressFunc(qint64);     //更新进度条

    void DisplayErrorFunc(QAbstractSocket::SocketError);

private:
    Ui::Widget *ui;
    QTcpSocket *socketText;
    QTcpSocket *socketFile;

    QFile *localFile;    //要发送的文件
    
    qint64 FileTotalSize;    //数据总大小
    qint64 FileSendedSize;   //已经发送的大小
    qint64 FileRemainedSize;    //剩下的数据大小
    qint64 loadSize;          //每次发送的大小


    QString FileName;            //保存文件信息
    QByteArray OutBlocks;         //数据缓冲区(存放每次要发送的数据)




private:
    void paintEvent(QPaintEvent *event);  //窗口的更改

    void GetLocalIPAdress();           //获取ip

    void closeEvent(QCloseEvent *event);    //窗口的关闭

    void setSheet();




};
#endif // WIDGET_H









//
